﻿// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SN2010_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何项目上不应定义此符号。这样，源文件中包含此文件的任何其他项目都会将
// SN2010_API 函数视为是从 DLL 导入的，而此 DLL 则将用此宏定义的
// 符号视为是被导出的。

#ifdef XCHIPUSB_EXPORTS
#define XCHIPUSB_API __declspec(dllexport)
#else
#define XCHIPUSB_API __declspec(dllimport)
#endif


#ifndef MY_UINT
#define MY_UINT unsigned long
#endif // MY_UINT

#include <functional>

enum SensorOptionType//从零开始是因为硬件标志从零开始
{
	Enum8Addr8Data = 0,
	Enum16Addr8Data = 1,
	Enum16Addr16Data = 2,
	Enum32Addr8Data = 3,
	Enum32Addr16Data = 4,
	Enum32Addr32Data = 5
};
struct DeviceInfos
{
	char DevicePath[120] = {};
	char rgpmVideoFriendlyName[120] = {};
	char VID[4] = {};
	char PID[4] = {};
};

struct CallBackInfo
{
	int progress = 0;
	int result = 0;
};



extern "C" __declspec(dllexport) XCHIPUSB_API DeviceInfos * UsbGetDevice(int devNum);
//XCHIPUSB_API BOOL UsbOpenDevice(DeviceInfo Device);
extern "C" __declspec(dllexport) XCHIPUSB_API int UsbGetDeviceNum();
XCHIPUSB_API BOOL UsbSelectDevice(int index);
XCHIPUSB_API BOOL UsbFlashRead(MY_UINT Addr, MY_UINT* pValue);
XCHIPUSB_API BOOL UsbFlashWrite(MY_UINT Addr, MY_UINT Value);
XCHIPUSB_API BOOL UsbRegisterRead(MY_UINT Addr, MY_UINT* pValue, BOOL bit32);
XCHIPUSB_API BOOL UsbRegisterWrite(MY_UINT Addr, MY_UINT pValue, BOOL bit32);
XCHIPUSB_API BOOL UsbI2cRead(MY_UINT ID, MY_UINT Addr, MY_UINT* pValue, int Type, int WaitType);
XCHIPUSB_API BOOL UsbI2cWrite(MY_UINT ID, MY_UINT Addr, MY_UINT pValue, int Type, int WaitType);
XCHIPUSB_API BOOL UsbFlashErase(MY_UINT Addr);
XCHIPUSB_API BOOL UsbFlashWriteFile(const char* FileName, MY_UINT StartAddr);
XCHIPUSB_API BOOL UsbFlashQuickReadFile(const char* FileName, MY_UINT csBeginAddr, MY_UINT csEndAddr);
XCHIPUSB_API BOOL UsbRegisterReadFile(const char* FileName, MY_UINT csBeginAddr, MY_UINT csEndAddr);
XCHIPUSB_API BOOL UsbRegisterWriteFile(const char* FileName);
XCHIPUSB_API BOOL UsbI2CReadFile(MY_UINT l_lStaeradd, MY_UINT l_lSendadd, const char* l_csPath, int l_lSIDAdd, int sensor);
XCHIPUSB_API BOOL UsbI2CWriteFile(const char* csFile, int WaitType);
XCHIPUSB_API BOOL UsbDestroyUSB(void);
XCHIPUSB_API CallBackInfo GetCallBackInfo();
